const sm2 = require('sm-crypto').sm2

// 公钥
const publicKey = '04ec7e40b8dfa4b14383f703ec5403b71db0ab505b9fc41f0df45a9910a307dfbd5b3c5afdd4b90d79fa0ab70d53fd88422df77e09b254a53e72b4857f74ab1da4'
// 私钥
const privateKey = '58967e2beb6fffd3c96545eebd3000b39c10087d48faa0d41f9c7bf3720e0ea4' 

// 加密
function encrypt(params) {
  if (typeof params == undefined) {
    params = null
  }
  // sm2的加密解密时有两种方式 0-C1C2C3、1-C1C3C2，前后端需要统一
  const cipherMode = 1
  // 注意前面的06可以和后端统一
  return "06" + sm2.doEncrypt(params, publicKey, cipherMode)
}

// 解密
function decrypt(params) {
  if (typeof params == undefined) {
    params = null
  }
  // sm2的加密解密时有两种方式 0-C1C2C3、1-C1C3C2，前后端需要统一
  const cipherMode = 1
  // 解密时需要去掉前面的 06
  return sm2.doDecrypt(params.slice(2), privateKey, cipherMode)
}

module.exports = { 
  encrypt,
  decrypt
}